<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>008.3.1.原型链与继承</title>
</head>
<body>
    
</body>
<script>
    function SuperType() { 
        this.property = 'hello SuperType'; 
    } 
    SuperType.prototype.getSuperValue = function() { 
        return this.property; 
    }; 
    function SubType() { 
        this.subproperty = 'this is SubType'; 
    }

    // 继承 SuperType 
    // SubType.prototype = new SuperType();
    // 写法变换，性质一样？
    let st = new SuperType();
    // 按照这种写法，sub的原型 指向了super的实例
    // SubType.prototype.__proto__ 指向的才是super的prototype -> 与书中记录的一致！！get到位！
    SubType.prototype = st;

    let ins = new SubType();
    console.log('Print super value : ',ins.getSuperValue());

    // 覆盖已有的方法 -> 这个行为的本质是 在st这个实例中添加 getSuperValue 方法，而非在链上
    SubType.prototype.getSuperValue = function () { 
    return false; 
    }

    console.log(ins.getSuperValue());

    let su = new SuperType();
    console.log('print super fun : ' , su.getSuperValue());

</script>
</html>